#
# Makefile
#
# Makefile for QCD
# copyright 2007, SiSoft
#
# History:
# 13 February 2007, Mike Steinberger: Removed requirement for yy_aux.o/c
# 6 February 2007, Mike Steinberger: Initial file creation
#
# Variations to be supported:
# Platforms: Windows, Linux and Solaris (SunOS?)
# With and without debug symbols
# Dependencies from makedepend
# Clean (delete all generated files)

# Platform-dependent definitions

ifeq ($(OSTYPE), solaris)
BIN = ../bin/Solaris/
INC = ../include
INCL = ../include/
vpath %.h ../include
vpath %.o ../bin/Solaris
CC   = gcc
CFLAGS = -I $(INC) -g -ldl
LOADOBJ = LoadSolaris

else #Linux
BIN  = ../bin/Linux/
INC  = ../include
INCL = ../include/
vpath %.h ../include
vpath %.o ../bin/Linux
CC   = gcc
CFLAGS = -I $(INC) -g
CTXFLAGS = -fPIC
LINKFLAGS = -ldl -lm
LINKTXFLAGS = -shared -lm
LOADOBJ = LoadLinux
endif #solaris

# Platform-independent definitions

CCOBJ  = main.o LoadFiles.o $(LOADOBJ).o IBIS_AMI_prbs.o

CCTSTOBJ = main.o LoadFiles.o $(LOADOBJ).o IBIS_AMI_tree.o

CCPRBSOBJ = LoadFiles.o IBIS_AMI_prbs.o IBIS_AMI_tree.o

SOURCE = main.c LoadFiles.c $(LOADOBJ).c IBIS_AMI_tree.c IBIS_AMI_Tx.c\
         IBIS_AMI_Rx.c IBIS_AMI_prbs.c IBIS_AMI_record.c IBIS_AMI_logger.c\
         ami2csv.c

CCLNOBJ = IBIS_AMI_tree.o IBIS_AMI_Tx.o IBIS_AMI_Rx.o

CCTXOBJ = IBIS_AMI_tree.o IBIS_AMI_Tx.o

CCRXOBJ = IBIS_AMI_tree.o IBIS_AMI_Rx.o

CCAMIOBJ= IBIS_AMI_tree.o ami2csv.o

# Rules

all: IBIS_AMI_test IBIS_AMI_Tx IBIS_AMI_Rx IBIS_AMI_prbs IBIS_AMI_record IBIS_AMI_logger ami2csv

IBIS_AMI_test: $(CCTSTOBJ)
	cd $(BIN); $(CC) $(CCTSTOBJ) $(LINKFLAGS) -o $@; ls -l

IBIS_AMI_Tx: $(CCTXOBJ)
	cd $(BIN); $(CC) $(CCTXOBJ) $(LINKTXFLAGS) -o lib$@.so; cp lib$@.so ../../test; ls -l

IBIS_AMI_Rx: $(CCRXOBJ)
	cd $(BIN); $(CC) $(CCRXOBJ) $(LINKTXFLAGS) -o lib$@.so; cp lib$@.so ../../test; ls -l

ami2csv: $(CCAMIOBJ)
	cd $(BIN); $(CC) $(CCAMIOBJ) $(LINKFLAGS) -o $@; ls -l

IBIS_AMI_prbs: $(CCPRBSOBJ)
	cd $(BIN); $(CC) $(CCPRBSOBJ) $(LINKFLAGS) -o $@; ls -l

IBIS_AMI_record: IBIS_AMI_record.c
	$(CC) $(CFLAGS) $(LINKFLAGS) -o $(BIN)$@ $<

IBIS_AMI_logger: IBIS_AMI_logger.c
	$(CC) $(CFLAGS) $(LINKFLAGS) -o $(BIN)$@ $<

ami2csv.o: ami2csv.c
	$(CC) $(CFLAGS) -c -o $(BIN)$@ $<

$(CCOBJ): %.o:%.c
	$(CC) $(CFLAGS) -c -o $(BIN)$@ $<

$(CCLNOBJ): %.o:%.c
	$(CC) $(CFLAGS) $(CTXFLAGS) -c -o $(BIN)$@ $<

.PHONY: depend
depend:
	makedepend -I$(INC) -Y $(SOURCE)

.PHONY: clean
clean:
	rm $(BIN)*.so
	rm $(BIN)*.o
	rm $(BIN)ami2csv
	rm $(BIN)IBIS_AMI_test
	rm $(BIN)IBIS_AMI_prbs
	rm $(BIN)IBIS_AMI_record
	rm $(BIN)IBIS_AMI_logger
# DO NOT DELETE

main.o: ../include/IBIS_AMI_test.h
LoadFiles.o: ../include/IBIS_AMI_test.h ../include/IBIS_AMI_tree.h
LoadLinux.o: ../include/IBIS_AMI_test.h
IBIS_AMI_tree.o: ../include/IBIS_AMI_tree.h
IBIS_AMI_Tx.o: ../include/IBIS_AMI_Tx.h ../include/IBIS_AMI.h
IBIS_AMI_Tx.o: ../include/IBIS_AMI_tree.h
IBIS_AMI_Rx.o: ../include/IBIS_AMI_Rx.h ../include/IBIS_AMI.h
IBIS_AMI_Rx.o: ../include/IBIS_AMI_tree.h
IBIS_AMI_prbs.o: ../include/IBIS_AMI_test.h
IBIS_AMI_record.o: ../include/IBIS_AMI_test.h
IBIS_AMI_logger.o: ../include/IBIS_AMI_test.h ../include/IBIS_AMI_tree.h
ami2csv.o: ../include/IBIS_AMI_test.h ../include/IBIS_AMI_tree.h
